#include<stdio.h>
#include<stdlib.h>

int g_value;
int un_g_value=100;
int main(int argc,char* argv[],char* env[])
{
  printf("code addr            : %p\n",main);
  printf("init global addr     : %p\n",&g_value);
  printf("uninit global addr   : %p\n",&un_g_value);
  char* m1 = (char*)malloc(100);
  char* m2 = (char*)malloc(100);
  char* m3 = (char*)malloc(100);
  char* m4 = (char*)malloc(100);
  static int s=100;
  printf("heap addr            : %p\n",m1);
  printf("heap addr            : %p\n",m2);
  printf("heap addr            : %p\n",m3);
  printf("heap addr            : %p\n",m4);
   
  printf("stack addr           : %p\n",&m1);
  printf("stack addr           : %p\n",&m2);
  printf("stack addr           : %p\n",&m3);
  printf("stack addr           : %p\n",&m4);
  printf("s stack addr         : %p\n",&s);
  for(int i=0;i<argc;i++)
  {
    printf("argv addr          :%p\n",argv[i]);
  }

  for(int i=0;env[i];i++)
  {
    printf("env addr           :%p\n",env[i]);
  }


  return 0; 
}
